package com.venutech.gongan.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.venutech.gongan.dto.rpc.common.vo.PoleDto;
import com.venutech.gongan.entity.Jkgw;
import com.venutech.gongan.entity.PoleQrCodeBindHistory;
import com.venutech.gongan.entity.User;
import com.venutech.gongan.vo.PoleEquipmentDto;
import com.venutech.gongan.vo.ScwgtEquipDto;

import java.util.List;
import java.util.Map;



public interface JkgwService {
    //插入数据
    int insert(Jkgw jkgw);

    //获取最大序列
    int getLastSeq();

    //根据id修改监控杆位信息
    int updateJkgw(Jkgw jkgw);

    //根据id删除监控杆位信息
    int deleteById(Integer gw_id);

    //根据id返回对象信息
    Jkgw getById(Integer gw_id);

  /*  //根据杆位id和和传入半径修改杆位半径值
    int updateJkgwRadius(Integer gw_id);*/

    //分页查询
    Page<Jkgw> getInfo(Integer pageNo, Integer pageSize, String begintime, String endtime,
                       String badw, String gw_name);


    //api 方法定义
    //获取监控杆位信息（外网）
    Jkgw getByQrId(Integer qr_id);

    //插入数据
    int insertPoleDto(PoleDto poleDto);

    //根据二维码Id查询关联的杆位信息和设备列表 api
    PoleEquipmentDto getEquipment(Integer qr_id);

    PoleEquipmentDto getEquipmentForMonitorType(Integer qr_id);

    PoleEquipmentDto getEquipment(Integer qr_id, User user);

    //根据qrId查询出杆位经纬度信息
    Jkgw getByLatAndLng(Integer qrId);

    Jkgw getByIdMD5(String qrIdMD5);

    int updateJkgwPoleDto(PoleDto poleDto);

    /**
     * 根据经纬度和半径来搜索杆位
     * @param map
     * @return
     */
    Jkgw getBoleByIdLatitudeAndRadius(Map<String, Object> map);

    List<Jkgw> getJkgwList(Jkgw jkgw);

    List<Jkgw> getByPositionAndRadius(double longitude, double latitude, double radius);

    List<PoleDto> searchByPositionAndRadius(double longitude, double latitude, double radius);

    List<Jkgw> getAll();

    int updateAreaCodeAndTownCode(int poleId, String areaCode, String areaName, String townCode, String townName);

    void changeBindQrCode(int poleId, String oldQrCodeMd5, String newQrCodeMd5);

    int saveChangeBindHistory(int poleId, String oldQrCodeMd5, String newQrCodeMd5, int changeType, int tempUserId);

    int saveChangeBindHistory(PoleQrCodeBindHistory poleQrCodeBindHistory);

    List<ScwgtEquipDto> getScwgtPoleEquipList(int poleId);

    PoleDto findPole(int poleId);

    List<PoleQrCodeBindHistory> getQrCodeBindHistory(String newQrCodeMd5);
}
